import api from './api';
import { FILE_BASE_URL } from './config';

// 作业管理相关接口，基于 AssignmentController_API.md
function patchFileUrl(filePath) {
  if (!filePath) return '';
  if (filePath.startsWith(FILE_BASE_URL)) return filePath;
  const idx = filePath.indexOf('/file/'); // 假设这是你的 bucket 名或特定路径
  if (idx !== -1) {
    return FILE_BASE_URL + filePath.slice(idx);
  }
  // 兼容旧的或本地的路径
  return filePath.replace('http://47.113.97.144', FILE_BASE_URL);
}

const assignmentService = {
  /**
   * 发布作业（支持附件）
   * @param {FormData} formData - 从组件构建好的 FormData 对象
   * @returns {Promise<Object>}
   */
  async publishAssignment(formData) {
    return await api.post('/api/teacher/assignment/publish', formData, {
      headers: { 'Content-Type': 'multipart/form-data' },
    }).then(res => res.data);
  },

  /**
   * 查询单个作业
   * @param {number} id - 作业ID
   * @returns {Promise<Object>}
   */
  async getAssignmentById(id) {
    return await api.get(`/api/teacher/assignment/${id}`).then(res => {
      if (res.data && res.data.data && res.data.data.filePath) {
        res.data.data.filePath = patchFileUrl(res.data.data.filePath);
      }
      return res.data;
    });
  },

  /**
   * 查询所有作业
   * @returns {Promise<Array>}
   */
  async getAllAssignments() {
    return await api.get('/api/teacher/assignment/list').then(res => {
      if (res.data && Array.isArray(res.data.data)) {
        res.data.data = res.data.data.map(item => ({
          ...item,
          filePath: patchFileUrl(item.filePath)
        }));
      }
      return res.data;
    });
  },

  /**
   * 修改作业
   * @param {FormData} formData - 从组件构建好的 FormData 对象
   * @returns {Promise<Object>}
   */
  async updateAssignment(formData) {
    return await api.put('/api/teacher/assignment/update', formData, {
      headers: { 'Content-Type': 'multipart/form-data' },
    }).then(res => res.data);
  },

  /**
   * 删除作业
   * @param {number} id - 作业ID
   * @returns {Promise<Object>}
   */
  async deleteAssignment(id) {
    return await api.delete(`/api/teacher/assignment/delete/${id}`).then(res => res.data);
  },
};

export default assignmentService;